﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using DevExpress.XtraEditors;
using System.Windows.Forms;

namespace CNCSoft.ErpApps.TMS.myclass
{
    class Calculate
    {
        private CommonClass mine;
        private DateTime startdate;
        private int tongsongay;

        public Calculate() { }

        #region coding
        //Calculate the end date from start date 246
        public void CalEndDate246(SqlConnection conn, DataSet ds,  DateTime startdate, int tongsongay, 
                                string ngaytrongtuan, int songaytrongtuan, DateEdit dateEditEndDate)
        {
            try
            {
                if (ngaytrongtuan.Equals("01"))
                {
                    ngaytrongtuan = "M-W-F";
                    SqlDataAdapter da246 = new SqlDataAdapter(@"usp_EndDate @startdate = '" + startdate + @"'
                                                        , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                        , @amountdatelearninweek = " + songaytrongtuan, conn);
                    da246.Fill(ds, "TableEndDate246");
                    if (dateEditEndDate.EditValue != null)
                    {
                        dateEditEndDate.EditValue = "";
                    }
                    dateEditEndDate.EditValue = ds.Tables["TableEndDate246"].Rows[0][0].ToString();
                    ds.Tables["TableEndDate246"].Rows.Clear();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date after rest date 246
        public void CalEndDateAfterRest246(SqlConnection conn, DataSet ds, DateTime restdate, 
                                        DateTime startdate, DateTime enddate, DateTime endrestdate, 
                                        int tongsongay, DateEdit dateEditEndDateAfterRest,
                                        string ngaytrongtuan, int songaytrongtuan)
        {
            try
            {
                if (DateTime.Compare(restdate, enddate) <= 0)
                {
                    int i = 0;
                    int end = 0;
                    int start = 0;
                    int tatcangayduocnghi = 0;
                    int songaynghitrungngayhoc = 0;

                    //Số ngày trong năm nay của ngày bắt đầu nghỉ
                    int check = restdate.DayOfYear;

                    //Số ngày trong năm nay của ngày kết thúc nghỉ
                    int endcheck = endrestdate.DayOfYear;

                    //Số ngày trong năm nay của ngày kết thúc khóa học
                    end = enddate.DayOfYear;

                    //Số ngày trong năm nay cua ngày bắt đầu khóa học
                    start = startdate.DayOfYear;

                    if (check < start)
                    {
                        restdate = startdate;
                    }

                    //Số ngày giữa ngày kết thúc nghỉ và ngày bắt đầu nghỉ
                    SqlDataAdapter da_restdate_endrestdate246 = new SqlDataAdapter(@"SELECT DATEDIFF(DAY, '"
                                            + restdate + "', '" + endrestdate + "')", conn);
                    da_restdate_endrestdate246.Fill(ds, "Table_RestDate_EndRestDate246");
                    tatcangayduocnghi = Convert.ToInt32(ds.Tables["Table_RestDate_EndRestDate246"].Rows[0][0].ToString());
                    ds.Tables["Table_RestDate_EndRestDate246"].Rows.Clear();

                    //Thứ trong tuần của ngày bắt đầu nghỉ
                    SqlDataAdapter da_thu_restdate246 = new SqlDataAdapter(@"SELECT DATEPART(WEEKDAY, '"
                                            + restdate + "')", conn);
                    da_thu_restdate246.Fill(ds, "Table_Thu_RestDate246");
                    i = Convert.ToInt32(ds.Tables["Table_Thu_RestDate246"].Rows[0][0].ToString());
                    ds.Tables["Table_Thu_RestDate246"].Rows.Clear();

                    if (i == 2 || i == 4 || i == 6)
                    {
                        songaynghitrungngayhoc = 1;
                    }

                    for (int j = 1; j <= tatcangayduocnghi; j++)
                    {
                        SqlDataAdapter da_TungNgayNghi246 = new SqlDataAdapter(@"SELECT DATEADD(DAY, " + j + ", '" + restdate + "')", conn);
                        da_TungNgayNghi246.Fill(ds, "Table_TungNgayNghi246");
                        DateTime datetemp = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", ds.Tables["Table_TungNgayNghi246"].Rows[0][0].ToString()));
                        ds.Tables["Table_TungNgayNghi246"].Rows.Clear();

                        SqlDataAdapter da_Thu_TungNgayNghi246 = new SqlDataAdapter(@"SELECT DATEPART(WEEKDAY, '" + datetemp + "')", conn);
                        da_Thu_TungNgayNghi246.Fill(ds, "Table_Thu_TungNgayNghi246");
                        int thu = Convert.ToInt32(ds.Tables["Table_Thu_TungNgayNghi246"].Rows[0][0].ToString());
                        ds.Tables["Table_Thu_TungNgayNghi246"].Rows.Clear();

                        if (thu == 2 || thu == 4 || thu == 6)
                        {
                            songaynghitrungngayhoc++;
                        }
                    }

                    tongsongay += songaynghitrungngayhoc;

                    if (ngaytrongtuan.Equals("01"))
                    {
                        ngaytrongtuan = "M-W-F";
                        SqlDataAdapter da_NewEndDate246 = new SqlDataAdapter(@"usp_EndDate @startdate = '" + startdate + @"'
                                                    , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                    , @amountdatelearninweek = " + songaytrongtuan, conn);
                        da_NewEndDate246.Fill(ds, "NewTableEndDate246");
                        if (dateEditEndDateAfterRest.EditValue != null)
                        {
                            dateEditEndDateAfterRest.EditValue = "";
                        }
                        dateEditEndDateAfterRest.EditValue = ds.Tables["NewTableEndDate246"].Rows[0][0].ToString();
                        ds.Tables["NewTableEndDate246"].Rows.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date from start date 357
        public void CalEndDate357(SqlConnection conn, DataSet ds, DateTime startdate, int tongsongay,
                                string ngaytrongtuan, int songaytrongtuan, DateEdit dateEditEndDate)
        {
            if (ngaytrongtuan.Equals("02"))
            {
                //SqlDataReader reader = null;
                ngaytrongtuan = "T-T-S";
                SqlDataAdapter da_EndDate357 = new SqlDataAdapter(@"usp_EndDate357 @startdate = '" + startdate + @"'
                                                        , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                        , @amountdatelearninweek = " + songaytrongtuan, conn);
                da_EndDate357.Fill(ds, "TableEndDate357");
                if (dateEditEndDate.EditValue != null)
                {
                    dateEditEndDate.EditValue = "";
                }
                dateEditEndDate.EditValue = ds.Tables["TableEndDate357"].Rows[0][0].ToString();
                ds.Tables["TableEndDate357"].Rows.Clear();
            }
        }

        //Calculate the end date after rest date 357
        public void CalEndDateAfterRest357(SqlConnection conn, DataSet ds, DateTime restdate,
                                        DateTime startdate, DateTime enddate, DateTime endrestdate,
                                        int tongsongay, DateEdit dateEditEndDateAfterRest,
                                        string ngaytrongtuan, int songaytrongtuan)
        {
            try
            {
                if (DateTime.Compare(restdate, enddate) < 0)
                {
                    int i = 0;
                    int end = 0;
                    int start = 0;
                    int tatcangayduocnghi = 0;
                    int songaynghitrungngayhoc = 0;

                    //Số ngày trong năm nay của ngày bắt đầu nghỉ
                    int check = restdate.DayOfYear;

                    //Số ngày trong năm nay của ngày kết thúc nghỉ
                    int endcheck = endrestdate.DayOfYear;

                    //Số ngày trong năm nay của ngày kết thúc khóa học
                    end = enddate.DayOfYear;

                    //Số ngày trong năm nay cua ngày bắt đầu khóa học
                    start = startdate.DayOfYear;

                    if (check < start)
                    {
                        restdate = startdate;
                    }

                    //Số ngày giữa ngày kết thúc nghỉ và ngày bắt đầu nghỉ
                    SqlDataAdapter da_RestDate_EndRestDate357 = new SqlDataAdapter(@"SELECT DATEDIFF(DAY, '"
                                            + restdate + "', '" + endrestdate + "')", conn);
                    da_RestDate_EndRestDate357.Fill(ds, "Table_RestDate_EndRestDate357");
                    tatcangayduocnghi = Convert.ToInt32(ds.Tables["Table_RestDate_EndRestDate357"].Rows[0][0].ToString());
                    ds.Tables["Table_RestDate_EndRestDate357"].Rows.Clear();

                    //Thứ trong tuần của ngày bắt đầu nghỉ
                    SqlDataAdapter da_Thu_Restdate357 = new SqlDataAdapter(@"SELECT DATEPART(WEEKDAY, '"
                                            + restdate + "')", conn);
                    da_Thu_Restdate357.Fill(ds, "Table_RestDate357");
                    i = Convert.ToInt32(ds.Tables["Table_RestDate357"].Rows[0][0].ToString());
                    ds.Tables["Table_RestDate357"].Rows.Clear();

                    if (i == 3 || i == 5 || i == 7)
                    {
                        songaynghitrungngayhoc = 1;
                    }

                    for (int j = 1; j <= tatcangayduocnghi; j++)
                    {
                        SqlDataAdapter da_TungNgayNghi357 = new SqlDataAdapter(@"SELECT DATEADD(DAY, " + j + ", '" + restdate + "')", conn);
                        da_TungNgayNghi357.Fill(ds, "Table_TungNgayNghi357");
                        DateTime datetemp = Convert.ToDateTime(ds.Tables["Table_TungNgayNghi357"].Rows[0][0].ToString());
                        ds.Tables["Table_TungNgayNghi357"].Rows.Clear();

                        SqlDataAdapter da_Thu_TungNgayNghi357 = new SqlDataAdapter(@"SELECT DATEPART(WEEKDAY, '" + datetemp + "')", conn);
                        da_Thu_TungNgayNghi357.Fill(ds, "Table_ThuTungNgayNghi357");
                        int thu = Convert.ToInt32(ds.Tables["Table_ThuTungNgayNghi357"].Rows[0][0].ToString());
                        ds.Tables["Table_ThuTungNgayNghi357"].Rows.Clear();

                        if (thu == 3 || thu == 5 || thu == 7)
                        {
                            songaynghitrungngayhoc++;
                        }
                    }

                    tongsongay += songaynghitrungngayhoc;

                    if (ngaytrongtuan.Equals("02"))
                    {
                        ngaytrongtuan = "T-T-S";
                        SqlDataAdapter da_NewEndDate357 = new SqlDataAdapter(@"usp_EndDate357 @startdate = '" + startdate + @"'
                                                        , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                        , @amountdatelearninweek = " + songaytrongtuan, conn);
                        da_NewEndDate357.Fill(ds, "NewTableEndDate357");
                        if (dateEditEndDateAfterRest.EditValue != null)
                        {
                            dateEditEndDateAfterRest.EditValue = "";
                        }
                        dateEditEndDateAfterRest.EditValue = ds.Tables["NewTableEndDate357"].Rows[0][0].ToString();
                        ds.Tables["NewTableEndDate357"].Rows.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date from start date 7CN
        public void CalEndDate7CN(SqlConnection conn, DataSet ds , DateTime startdate, int tongsongay,
                                    string ngaytrongtuan, int songaytrongtuan, DateEdit dateEditEndDate)
        {
            try
            {
                if (ngaytrongtuan.Equals("20"))
                {
                    ngaytrongtuan = "7-CN";
                    SqlDataAdapter da_EndDate7CN = new SqlDataAdapter(@"usp_EndDate7CN @startdate = '" + startdate + @"'
                                                        , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                        , @amountdatelearninweek = " + songaytrongtuan, conn);
                    da_EndDate7CN.Fill(ds, "TableEndDate7CN");
                    if (dateEditEndDate.EditValue != null)
                    {
                        dateEditEndDate.EditValue = "";
                    }
                    string temp = ds.Tables["TableEndDate7CN"].Rows[0][0].ToString();
                    dateEditEndDate.EditValue = ds.Tables["TableEndDate7CN"].Rows[0][0].ToString();
                    ds.Tables["TableEndDate7CN"].Rows.Clear();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date after rest date 7CN
        public void CalEndDateAfterRest7CN(SqlConnection conn, DataSet ds, DateTime startdate, DateTime enddate,
                                            DateTime restdate, DateTime endrestdate, int tongsongay, string ngaytrongtuan,
                                            int songaytrongtuan, DateEdit dateEditEndDateAfterRest)
        {
            try
            {
                if (DateTime.Compare(restdate, enddate) < 0)
                {
                    int songaynghi = 0;
                    int songaynghitrungngayhoc = 0;

                    if (DateTime.Compare(restdate, startdate) < 0)
                    {
                        restdate = startdate;
                    }

                    //Số ngày được nghỉ
                    string sql =
                        @"SELECT DATEDIFF(DAY, '" + restdate + "','" + endrestdate + "')";
                    SqlDataAdapter da_RestDate_EndRestDate7CN = new SqlDataAdapter(sql, conn);
                    da_RestDate_EndRestDate7CN.Fill(ds, "Table_RestDate_EndRestDate7CN");
                    songaynghi = Convert.ToInt32(ds.Tables["Table_RestDate_EndRestDate7CN"].Rows[0][0].ToString());
                    ds.Tables["Table_RestDate_EndRestDate7CN"].Rows.Clear();

                    string sql2 =
                        @"SELECT DATEPART(WEEKDAY, '" + restdate + "')";
                    SqlDataAdapter da_Thu_RestDate7CN = new SqlDataAdapter(sql2, conn);
                    da_Thu_RestDate7CN.Fill(ds, "Table_Thu_RestDate7CN");
                    int ngaytrongtuan_restdate = Convert.ToInt32(ds.Tables["Table_Thu_RestDate7CN"].Rows[0][0].ToString());
                    ds.Tables["Table_Thu_RestDate7CN"].Rows.Clear();

                    if (ngaytrongtuan_restdate == 7 || ngaytrongtuan_restdate == 1)
                        songaynghitrungngayhoc = 1;
                    for (int i = 1; i <= songaynghi; i++)
                    {
                        string sql3 =
                            @"SELECT DATEADD(DAY, " + i + ", '" + restdate + "')";
                        SqlDataAdapter da_TungNgayNghi7CN = new SqlDataAdapter(sql3, conn);
                        da_TungNgayNghi7CN.Fill(ds, "Table_TungNgayNghi7CN");
                        DateTime dateinloop = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", ds.Tables["Table_TungNgayNghi7CN"].Rows[0][0]));
                        ds.Tables["Table_TungNgayNghi7CN"].Rows.Clear();

                        string sql4 =
                            @"SELECT DATEPART(WEEKDAY, '" + dateinloop + "')";
                        SqlDataAdapter da_Thu_TungNgayNghi7CN = new SqlDataAdapter(sql4, conn);
                        da_Thu_TungNgayNghi7CN.Fill(ds, "Table_Thu_TungNgayNghi7CN");
                        int thu = Convert.ToInt32(ds.Tables["Table_Thu_TungNgayNghi7CN"].Rows[0][0].ToString());
                        ds.Tables["Table_Thu_TungNgayNghi7CN"].Rows.Clear();

                        if (thu == 1 || thu == 7)
                        {
                            songaynghitrungngayhoc++;
                        }
                    }

                    tongsongay += songaynghitrungngayhoc;

                    if (ngaytrongtuan.Equals("20"))
                    {
                        ngaytrongtuan = "7CN";
                        SqlDataAdapter da_NewEndDate7CN = new SqlDataAdapter(@"usp_EndDate7CN @startdate = '" + startdate + @"'
                                                        , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                        , @amountdatelearninweek = " + songaytrongtuan, conn);
                        da_NewEndDate7CN.Fill(ds, "TableNewEndDate7CN");
                        if (dateEditEndDateAfterRest.EditValue != null)
                        {
                            dateEditEndDateAfterRest.EditValue = "";
                        }
                        dateEditEndDateAfterRest.EditValue = ds.Tables["TableNewEndDate7CN"].Rows[0][0].ToString();
                        ds.Tables["TableNewEndDate7CN"].Rows.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date after rest one date 7CN
        public void CalEndDateAfterRest7CN(SqlConnection conn, DataSet ds, DateTime startdate, DateTime enddate,
                                            DateTime restdate, int tongsongay, string ngaytrongtuan,
                                            int songaytrongtuan, DateEdit dateEditEndDateAfterRest)
        {
            try
            {
                if (DateTime.Compare(restdate, enddate) < 0)
                {
                    int songaynghitrungngayhoc = 0;

                    if (DateTime.Compare(restdate, startdate) < 0)
                    {
                        restdate = startdate;
                    }

                    //Số ngày được nghỉ là 1 ngày

                    string sql2 =
                        @"SELECT DATEPART(WEEKDAY, '" + restdate + "')";
                    SqlDataAdapter da_Thu_RestDate7CN = new SqlDataAdapter(sql2, conn);
                    da_Thu_RestDate7CN.Fill(ds, "Table_Thu_RestDate7CN");
                    int ngaytrongtuan_restdate = Convert.ToInt32(ds.Tables["Table_Thu_RestDate7CN"].Rows[0][0].ToString());
                    ds.Tables["Table_Thu_RestDate7CN"].Rows.Clear();

                    if (ngaytrongtuan_restdate == 7 || ngaytrongtuan_restdate == 1)
                        songaynghitrungngayhoc = 1;

                    tongsongay += songaynghitrungngayhoc;

                    if (ngaytrongtuan.Equals("20"))
                    {
                        ngaytrongtuan = "7CN";
                        SqlDataAdapter da_NewEndDate7CN = new SqlDataAdapter(@"usp_EndDate7CN @startdate = '" + startdate + @"'
                                                        , @amount = " + tongsongay + @", @datelearninweek = '" + ngaytrongtuan + @"'
                                                        , @amountdatelearninweek = " + songaytrongtuan, conn);
                        da_NewEndDate7CN.Fill(ds, "TableNewEndDate7CN");
                        if (dateEditEndDateAfterRest.EditValue != null)
                        {
                            dateEditEndDateAfterRest.EditValue = "";
                        }
                        dateEditEndDateAfterRest.EditValue = ds.Tables["TableNewEndDate7CN"].Rows[0][0].ToString();
                        ds.Tables["TableNewEndDate7CN"].Rows.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date from start date MonToFri
        public void CalEndDateMonToFri(SqlConnection conn, DataSet ds, DateTime startdate, int tongsongay,
                                        string ngaytrongtuan, int songaytrongtuan, DateEdit dateEditEndDate)
        {
            try
            {
                if (ngaytrongtuan.Equals("21"))
                {
                    ngaytrongtuan = "MonToFri";
                    string sql =
                        @"usp_EndDateMonToFri @startdate = '" + startdate + "', @amount = " + tongsongay + ", @datelearninweek = '"
                            + ngaytrongtuan + "', @amountdatelearninweek = " + songaytrongtuan;
                    SqlDataAdapter da_EndDateMonToFri = new SqlDataAdapter(sql, conn);
                    da_EndDateMonToFri.Fill(ds, "TableEndDateMonToFri");
                    if (dateEditEndDate.EditValue != null)
                    {
                        dateEditEndDate.EditValue = "";
                    }
                    dateEditEndDate.EditValue = ds.Tables["TableEndDateMonToFri"].Rows[0][0].ToString();
                    ds.Tables["TableEndDateMonToFri"].Rows.Clear();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date after rest date MonToFri
        public void CalEndDateAfterRestMonToFri(SqlConnection conn, DataSet ds, DateTime startdate, DateTime enddate,
                                                DateTime restdate, DateTime endrestdate, int tongsongay, string ngaytrongtuan,
                                                int songaytrongtuan, DateEdit dateEditEndDateAfterRest)
        {
            try
            {
                if (DateTime.Compare(restdate, enddate) < 0)
                {
                    int songaynghitrungngayhoc = 0;
                    if (restdate < startdate)
                    {
                        restdate = startdate;
                    }

                    //Calculate thoi gian duoc nghỉ
                    string sql = 
                        @"SELECT DATEDIFF(DAY, '" + restdate + "', '" + endrestdate + "')";
                    SqlDataAdapter da_RestDate_EndRestDateMonToFri = new SqlDataAdapter(sql, conn);
                    da_RestDate_EndRestDateMonToFri.Fill(ds, "Table_RestDate_EndRestDateMonToFri");
                    int songaynghi = Convert.ToInt32(ds.Tables["Table_RestDate_EndRestDateMonToFri"].Rows[0][0]);
                    ds.Tables["Table_RestDate_EndRestDateMonToFri"].Rows.Clear();

                    //Calculate so ngay nghi trung voi ngay hoc
                    string sql1 =
                        @"SELECT DATEPART(WEEKDAY, '" + restdate + "')";
                    SqlDataAdapter da_Thu_RestDateMonToFri = new SqlDataAdapter(sql1, conn);
                    da_Thu_RestDateMonToFri.Fill(ds, "Table_Thu_RestDateMonToFri");
                    int restdate_dateinweek = Convert.ToInt32(ds.Tables["Table_Thu_RestDateMonToFri"].Rows[0][0]);
                    ds.Tables["Table_Thu_RestDateMonToFri"].Rows.Clear();

                    if (restdate_dateinweek == 2 || restdate_dateinweek == 3 || restdate_dateinweek == 4
                        || restdate_dateinweek == 5 || restdate_dateinweek == 6)
                        songaynghitrungngayhoc = 1;

                    for (int i = 1; i <= songaynghi; i++)
                    {
                        string sql2 =
                            @"SELECT DATEADD(DAY, " + i + ", '" + restdate + "')";
                        SqlDataAdapter da_TungNgayNghiMonToFri = new SqlDataAdapter(sql2, conn);
                        da_TungNgayNghiMonToFri.Fill(ds, "Table_TungNgayNghiMonToFri");
                        DateTime datetemp = Convert.ToDateTime(ds.Tables["Table_TungNgayNghiMonToFri"].Rows[0][0]);
                        ds.Tables["Table_TungNgayNghiMonToFri"].Rows.Clear();

                        string sql3 =
                            @"SELECT DATEPART(WEEKDAY, '" + datetemp + "')";
                        SqlDataAdapter da_Thu_TungNgayNghiMonToFri = new SqlDataAdapter(sql3, conn);
                        da_Thu_TungNgayNghiMonToFri.Fill(ds, "Table_ThuTungNgayNghiMonToFri");
                        int thu = Convert.ToInt32(ds.Tables["Table_ThuTungNgayNghiMonToFri"].Rows[0][0]);
                        ds.Tables["Table_ThuTungNgayNghiMonToFri"].Rows.Clear();

                        if (thu == 2 || thu == 3 || thu == 4
                        || thu == 5 || thu == 6)
                            songaynghitrungngayhoc++;
                    }
                    tongsongay += songaynghitrungngayhoc;

                    if (ngaytrongtuan.Equals("21"))
                    {
                        ngaytrongtuan = "MonToFri";
                        string sql4 =
                            @"usp_EndDateMonToFri @startdate = '" + startdate + "', @amount = " + tongsongay + ", @datelearninweek = '"
                                + ngaytrongtuan + "', @amountdatelearninweek = " + songaytrongtuan;
                        SqlDataAdapter da_NewEndDateMonToFri = new SqlDataAdapter(sql4, conn);
                        da_NewEndDateMonToFri.Fill(ds, "Table_NewEndDateMonToFri");
                        if (dateEditEndDateAfterRest.EditValue != null)
                        {
                            dateEditEndDateAfterRest.EditValue = "";
                        }
                        DateTime temp = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", ds.Tables["Table_NewEndDateMonToFri"].Rows[0][0]));
                        dateEditEndDateAfterRest.EditValue = ds.Tables["Table_NewEndDateMonToFri"].Rows[0][0].ToString();
                        ds.Tables["Table_NewEndDateMonToFri"].Rows.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        //Calculate the end date after rest one date MonToFri
        public void CalEndDateAfterRestMonToFri(SqlConnection conn, DataSet ds, DateTime startdate, DateTime enddate,
                                                DateTime restdate, int tongsongay, string ngaytrongtuan,
                                                int songaytrongtuan, DateEdit dateEditEndDateAfterRest)
        {
            try
            {
                if (DateTime.Compare(restdate, enddate) < 0)
                {
                    int songaynghitrungngayhoc = 0;
                    if (restdate < startdate)
                    {
                        restdate = startdate;
                    }

                    //Calculate thoi gian duoc nghỉ là 1 ngày

                    //Calculate so ngay nghi trung voi ngay hoc
                    string sql1 =
                        @"SELECT DATEPART(WEEKDAY, '" + restdate + "')";
                    SqlDataAdapter da_Thu_RestDateMonToFri = new SqlDataAdapter(sql1, conn);
                    da_Thu_RestDateMonToFri.Fill(ds, "Table_Thu_RestDateMonToFri");
                    int restdate_dateinweek = Convert.ToInt32(ds.Tables["Table_Thu_RestDateMonToFri"].Rows[0][0]);
                    ds.Tables["Table_Thu_RestDateMonToFri"].Rows.Clear();

                    if (restdate_dateinweek == 2 || restdate_dateinweek == 3 || restdate_dateinweek == 4
                        || restdate_dateinweek == 5 || restdate_dateinweek == 6)
                        songaynghitrungngayhoc = 1;

                    tongsongay += songaynghitrungngayhoc;

                    if (ngaytrongtuan.Equals("21"))
                    {
                        ngaytrongtuan = "MonToFri";
                        string sql4 =
                            @"usp_EndDateMonToFri @startdate = '" + startdate + "', @amount = " + tongsongay + ", @datelearninweek = '"
                                + ngaytrongtuan + "', @amountdatelearninweek = " + songaytrongtuan;
                        SqlDataAdapter da_NewEndDateMonToFri = new SqlDataAdapter(sql4, conn);
                        da_NewEndDateMonToFri.Fill(ds, "Table_NewEndDateMonToFri");
                        if (dateEditEndDateAfterRest.EditValue != null)
                        {
                            dateEditEndDateAfterRest.EditValue = "";
                        }
                        DateTime temp = Convert.ToDateTime(String.Format("{0:MM/dd/yyyy}", ds.Tables["Table_NewEndDateMonToFri"].Rows[0][0]));
                        dateEditEndDateAfterRest.EditValue = ds.Tables["Table_NewEndDateMonToFri"].Rows[0][0].ToString();
                        ds.Tables["Table_NewEndDateMonToFri"].Rows.Clear();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        #endregion
    }
}
